package ThreadPool;

import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

/**
 * 创建线程池
 */
public class demo1 {
    public static void main(String[] args) {
        // 创建线程池
        ExecutorService pool1 = Executors.newCachedThreadPool();

        // 创建一个固定数线程池，支持定时及周期性任务执行
        ExecutorService pool2 = Executors.newFixedThreadPool(2);

        // 创建一个单线程化的线程池，它只会用唯一的工作线程来执行任务
        ScheduledExecutorService pool3 = Executors.newSingleThreadScheduledExecutor();

        // 创建一个单线程化的线程池，它只会用唯一的工作线程来执行任务，保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
        ScheduledExecutorService pool4 = Executors.newScheduledThreadPool(2);

//        for (int i = 0; i < 1000; i++) {
//            int id = i;
//            pool.submit(new Runnable() {
//                @Override
//                public void run() {
//                    System.out.println("线程池中的线程被执行了  " + Thread.currentThread().getName() + "  " + id);
//                }
//            });
//        }

        for (int i = 0; i < 1000; i++) {
            int id = i;
            pool4.submit(() -> {
                System.out.println("线程池中的线程被执行了  " + Thread.currentThread().getName() + "  " + id);
            });
        }

        pool1.shutdown();
    }
}
